// 倒计时器
const withS = (WrappedComponent) => {
  return () => {
    const [second, setSecond] = useState(COUNTDOWN_SECONDS);
    // setInterval() 版本
    // useEffect(() => {
    //   // 开始倒计时
    //   const interval = setInterval(() => {
    //     setSecond(preSecond => {
    //       if (preSecond <= 1) {
    //         clearInterval(interval)
    //         // 重置秒数
    //         return COUNTDOWN_SECONDS
    //       } else {
    //         return preSecond - 1
    //       }
    //     })
    //   }, 1000)
    //   return () => clearInterval(interval)
    // }, [])
    // setTimeout() 版本
    useEffect(() => {
      function countdown() {
        setSecond((preSecond) => {
          if (preSecond <= 1) {
            // 重置秒数
            return COUNTDOWN_SECONDS;
          } else {
            timer = setTimeout(countdown, 1000);
            return preSecond - 1;
          }
        });
      }
      // 开始倒计时
      const timer = setTimeout(countdown, 1000);
      return () => clearTimeout(timer);
    }, []);
    return <WrappedComponent time={second} />
  }
}
const A = ({ time }) => {
  return (
    <div>
      <div>{time}</div>
    </div>
  )
}
const AWithS = withS(A);
const App = () => { return <AWithS />; }
